﻿/*
 * 功能:会话工厂
 * 作者:YJP
 * 日期:2017-04-27
 * 修改作者：
 * 修改日期：
 */
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
using FPC.Offer.Model;

namespace FPC.Offer.Repository
{
    /// <summary>
    /// 会话工厂
    /// </summary>
    public abstract class ContextFactory
    {
        /// <summary>
        /// 返回我们当前线程内的数据库上下文，如果当前线程内没有上下文，
        /// 那么创建一个上下文，并保证上下文实例在线程内部是唯一的
        /// </summary>
        /// <returns></returns>
        public static DbContext CreateDbContext()
        {
            var dbContext = CallContext.GetData("DbContext") as DbContext;
            if (dbContext == null)  //线程在数据槽里面没有此上下文
            {
                dbContext = new FPC_OfferEntities(); //创建一个EF上下文
                CallContext.SetData("DbContext", dbContext);
            }
            return dbContext;
        }
    }
}
